import pandas as pd
import matplotlib.pyplot as plt
import numpy as np

df = pd.read_excel('libs/产品销售统计.xlsx')

# 解决中文乱码
plt.rcParams['font.sans-serif'] = ['SimHei']

# 设置画布大小
plt.figure(figsize=(10, 6))

# x = df['产品名称']
x = np.array([0, 1, 2, 3, 4, 5, 6, 7])  # 将列表转成list
y1 = df['1月'] + df['2月'] + df['3月']
y2 = df['4月'] + df['5月'] + df['6月']
y3 = df['7月'] + df['8月'] + df['9月']
y4 = df['10月'] + df['11月'] + df['12月']

bar_width = 0.2  # 柱子的宽度

# 设置y轴的标签
plt.ylabel('季度销售量')
plt.xlabel('产品名称')

# 设置图标的标题
plt.title('2020年季度销售量')

# 绘制柱状图
plt.bar(x, y1, bar_width, color='c', alpha=0.5)
plt.bar(x + bar_width, y2, bar_width, color='b', alpha=0.5)
plt.bar(x + 2 * bar_width, y3, bar_width, color='g', alpha=0.5)
plt.bar(x + 3 * bar_width, y4, bar_width, color='y', alpha=0.5)

# 设置坐标轴的刻度
data = df['产品名称']
plt.xticks(x, data)

# 添加文本标签
for a, b in zip(x, y1):
    plt.text(a, b, format(b, ','), ha='center', va='bottom', fontsize=8)

for a, b in zip(x, y2):
    plt.text(a + bar_width, b, format(b, ','), ha='center', va='bottom', fontsize=8)

for a, b in zip(x, y3):
    plt.text(a + 2 * bar_width, b, format(b, ','), ha='center', va='bottom', fontsize=8)

for a, b in zip(x, y4):
    plt.text(a + 3 * bar_width, b, format(b, ','), ha='center', va='bottom', fontsize=8)

# 设置图例
plt.legend(['第一季度', '第二季度', '第三季度', '第四季度'])
plt.show()
